package chapter02

object Demo07_DataTypeConversion {
  def main(arg: Array[String]): Unit = {
    //自动提升原则： 有多种类型的数据混合运算时，系统首先自动将所有的数据转换成精度大的那个数据类型

    //把精度大的数值类型赋值给精度小的数值类型时就会报错，反之就会进行自动类型转换

    //（byte short）和char不会自动转换

    //byte short  char 他们三者可以计算， 在计算时首先转换成为int类型
    val a4: Byte = 12
    val b4: Short = 25
    val c4: Char = 'c'
    val result4: Int = a4 + b4
    val result44: Int = a4 + b4 + c4
    println(result4)
    println(result44)


  //强制类型转换
  //将数据由高精度转换为低精度
  val n1: Int = -2.9.toInt
  println("n1: " + n1)

  //强转符号只针对最近的操作数有效，往往会时小括号提升优先级
  val n2: Int = 2.6.toInt+3.7.toInt
  val n3: Int = (2.6+3.7).toInt
  println("n2: " + n2) //5
  println("n3: " + n3) //6

  //数值类型和String类型的转换
    //数值转换成String类型
  val n: Int = 23
  val s: String = n + ""
  println(s) //

    //String转换成数值类型
    val m: Int = "12".toInt
    val f: Float = "12.3".toFloat
    val f2: Int = "12.3".toDouble.toInt
    println(f2)



  }
}
